<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Calico: AprilTags::TagDetection Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Calico
   </div>
   <div id="projectbrief">A visual-inertial calibration library designed for rapid problem construction and debugging.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespaceAprilTags.html">AprilTags</a></li><li class="navelem"><a class="el" href="structAprilTags_1_1TagDetection.html">TagDetection</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="structAprilTags_1_1TagDetection-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">AprilTags::TagDetection Struct Reference</div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a51b7d6e963f6af1aa8234f9646d44f57"><td class="memItemLeft" align="right" valign="top"><a id="a51b7d6e963f6af1aa8234f9646d44f57"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structAprilTags_1_1TagDetection.html#a51b7d6e963f6af1aa8234f9646d44f57">TagDetection</a> ()</td></tr>
<tr class="memdesc:a51b7d6e963f6af1aa8234f9646d44f57"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <br /></td></tr>
<tr class="separator:a51b7d6e963f6af1aa8234f9646d44f57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8aa61cb3d1dbe5d575baaad5fb34f14"><td class="memItemLeft" align="right" valign="top"><a id="aa8aa61cb3d1dbe5d575baaad5fb34f14"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structAprilTags_1_1TagDetection.html#aa8aa61cb3d1dbe5d575baaad5fb34f14">TagDetection</a> (int <a class="el" href="structAprilTags_1_1TagDetection.html#ad402daacc6368e86351ec6ddd226cd15">id</a>)</td></tr>
<tr class="memdesc:aa8aa61cb3d1dbe5d575baaad5fb34f14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for manually creating tags in a world map. <br /></td></tr>
<tr class="separator:aa8aa61cb3d1dbe5d575baaad5fb34f14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63d6d30ca13516883b261fe5efa3469d"><td class="memItemLeft" align="right" valign="top"><a id="a63d6d30ca13516883b261fe5efa3469d"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structAprilTags_1_1TagDetection.html#a63d6d30ca13516883b261fe5efa3469d">getXYOrientation</a> () const</td></tr>
<tr class="memdesc:a63d6d30ca13516883b261fe5efa3469d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Orientation in the xy plane. <br /></td></tr>
<tr class="separator:a63d6d30ca13516883b261fe5efa3469d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad8161946d00c00ecae73f48c4cdd92ee"><td class="memItemLeft" align="right" valign="top"><a id="ad8161946d00c00ecae73f48c4cdd92ee"></a>
std::pair&lt; float, float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structAprilTags_1_1TagDetection.html#ad8161946d00c00ecae73f48c4cdd92ee">interpolate</a> (float x, float y) const</td></tr>
<tr class="memdesc:ad8161946d00c00ecae73f48c4cdd92ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interpolate point given (x,y) is in tag coordinate space from (-1,-1) to (1,1). <br /></td></tr>
<tr class="separator:ad8161946d00c00ecae73f48c4cdd92ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c4c6789e3e60c2067cc2e7f70ed6b0d"><td class="memItemLeft" align="right" valign="top"><a id="a3c4c6789e3e60c2067cc2e7f70ed6b0d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structAprilTags_1_1TagDetection.html#a3c4c6789e3e60c2067cc2e7f70ed6b0d">overlapsTooMuch</a> (const <a class="el" href="structAprilTags_1_1TagDetection.html">TagDetection</a> &amp;other) const</td></tr>
<tr class="memdesc:a3c4c6789e3e60c2067cc2e7f70ed6b0d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Used to eliminate redundant tags. <br /></td></tr>
<tr class="separator:a3c4c6789e3e60c2067cc2e7f70ed6b0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f1fc2bda2c2039dd657912975c2da8a"><td class="memItemLeft" align="right" valign="top"><a id="a1f1fc2bda2c2039dd657912975c2da8a"></a>
Eigen::Matrix4d&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structAprilTags_1_1TagDetection.html#a1f1fc2bda2c2039dd657912975c2da8a">getRelativeTransform</a> (double tag_size, double fx, double fy, double px, double py) const</td></tr>
<tr class="memdesc:a1f1fc2bda2c2039dd657912975c2da8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Relative pose of tag with respect to the camera. <br /></td></tr>
<tr class="separator:a1f1fc2bda2c2039dd657912975c2da8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a50b871a248175a3841c90cb6046e346f"><td class="memItemLeft" align="right" valign="top"><a id="a50b871a248175a3841c90cb6046e346f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structAprilTags_1_1TagDetection.html#a50b871a248175a3841c90cb6046e346f">getRelativeTranslationRotation</a> (double tag_size, double fx, double fy, double px, double py, Eigen::Vector3d &amp;trans, Eigen::Matrix3d &amp;rot) const</td></tr>
<tr class="memdesc:a50b871a248175a3841c90cb6046e346f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Recover rotation matrix and translation vector of April tag relative to camera. <br /></td></tr>
<tr class="separator:a50b871a248175a3841c90cb6046e346f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7820dcd699d2dddea58b737ba69ddf7f"><td class="memItemLeft" align="right" valign="top"><a id="a7820dcd699d2dddea58b737ba69ddf7f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structAprilTags_1_1TagDetection.html#a7820dcd699d2dddea58b737ba69ddf7f">draw</a> (cv::Mat &amp;image) const</td></tr>
<tr class="memdesc:a7820dcd699d2dddea58b737ba69ddf7f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draw the detection within the supplied image, including boarders and tag ID. <br /></td></tr>
<tr class="separator:a7820dcd699d2dddea58b737ba69ddf7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a6fd07b215ad1ea1141a47e39f9d1047f"><td class="memItemLeft" align="right" valign="top"><a id="a6fd07b215ad1ea1141a47e39f9d1047f"></a>
static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structAprilTags_1_1TagDetection.html#a6fd07b215ad1ea1141a47e39f9d1047f">sortByIdCompare</a> (const <a class="el" href="structAprilTags_1_1TagDetection.html">TagDetection</a> &amp;a, const <a class="el" href="structAprilTags_1_1TagDetection.html">TagDetection</a> &amp;b)</td></tr>
<tr class="memdesc:a6fd07b215ad1ea1141a47e39f9d1047f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compare function to sort detections by std::sort. <br /></td></tr>
<tr class="separator:a6fd07b215ad1ea1141a47e39f9d1047f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:ac4da2cd1c14b32f0152a6ea828870413"><td class="memItemLeft" align="right" valign="top"><a id="ac4da2cd1c14b32f0152a6ea828870413"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structAprilTags_1_1TagDetection.html#ac4da2cd1c14b32f0152a6ea828870413">good</a></td></tr>
<tr class="memdesc:ac4da2cd1c14b32f0152a6ea828870413"><td class="mdescLeft">&#160;</td><td class="mdescRight">Is the detection good enough? <br /></td></tr>
<tr class="separator:ac4da2cd1c14b32f0152a6ea828870413"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4fc2af2b8e56df4030ac8bb751b1334f"><td class="memItemLeft" align="right" valign="top"><a id="a4fc2af2b8e56df4030ac8bb751b1334f"></a>
long long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structAprilTags_1_1TagDetection.html#a4fc2af2b8e56df4030ac8bb751b1334f">obsCode</a></td></tr>
<tr class="memdesc:a4fc2af2b8e56df4030ac8bb751b1334f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Observed code. <br /></td></tr>
<tr class="separator:a4fc2af2b8e56df4030ac8bb751b1334f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac18467b31ad56faf52e717b77d1af129"><td class="memItemLeft" align="right" valign="top"><a id="ac18467b31ad56faf52e717b77d1af129"></a>
long long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structAprilTags_1_1TagDetection.html#ac18467b31ad56faf52e717b77d1af129">code</a></td></tr>
<tr class="memdesc:ac18467b31ad56faf52e717b77d1af129"><td class="mdescLeft">&#160;</td><td class="mdescRight">Matched code. <br /></td></tr>
<tr class="separator:ac18467b31ad56faf52e717b77d1af129"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad402daacc6368e86351ec6ddd226cd15"><td class="memItemLeft" align="right" valign="top"><a id="ad402daacc6368e86351ec6ddd226cd15"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structAprilTags_1_1TagDetection.html#ad402daacc6368e86351ec6ddd226cd15">id</a></td></tr>
<tr class="memdesc:ad402daacc6368e86351ec6ddd226cd15"><td class="mdescLeft">&#160;</td><td class="mdescRight">What was the ID of the detected tag? <br /></td></tr>
<tr class="separator:ad402daacc6368e86351ec6ddd226cd15"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45835f3fabb2063bc61a9674c1d7d37d"><td class="memItemLeft" align="right" valign="top"><a id="a45835f3fabb2063bc61a9674c1d7d37d"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structAprilTags_1_1TagDetection.html#a45835f3fabb2063bc61a9674c1d7d37d">hammingDistance</a></td></tr>
<tr class="memdesc:a45835f3fabb2063bc61a9674c1d7d37d"><td class="mdescLeft">&#160;</td><td class="mdescRight">The hamming distance between the detected code and the true code. <br /></td></tr>
<tr class="separator:a45835f3fabb2063bc61a9674c1d7d37d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1492773559c66352e5d17020b2f5c563"><td class="memItemLeft" align="right" valign="top"><a id="a1492773559c66352e5d17020b2f5c563"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structAprilTags_1_1TagDetection.html#a1492773559c66352e5d17020b2f5c563">rotation</a></td></tr>
<tr class="memdesc:a1492773559c66352e5d17020b2f5c563"><td class="mdescLeft">&#160;</td><td class="mdescRight">How many 90 degree rotations were required to align the code (internal use only) <br /></td></tr>
<tr class="separator:a1492773559c66352e5d17020b2f5c563"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51424269d34b011e17161e835a8e5149"><td class="memItemLeft" align="right" valign="top">std::pair&lt; float, float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structAprilTags_1_1TagDetection.html#a51424269d34b011e17161e835a8e5149">p</a> [4]</td></tr>
<tr class="separator:a51424269d34b011e17161e835a8e5149"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0be0d15d381f8fa664a29eb682521cac"><td class="memItemLeft" align="right" valign="top"><a id="a0be0d15d381f8fa664a29eb682521cac"></a>
std::pair&lt; float, float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structAprilTags_1_1TagDetection.html#a0be0d15d381f8fa664a29eb682521cac">cxy</a></td></tr>
<tr class="memdesc:a0be0d15d381f8fa664a29eb682521cac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Center of tag in pixel coordinates. <br /></td></tr>
<tr class="separator:a0be0d15d381f8fa664a29eb682521cac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a305668873db95b85b0b78c0df4e2c90c"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structAprilTags_1_1TagDetection.html#a305668873db95b85b0b78c0df4e2c90c">observedPerimeter</a></td></tr>
<tr class="memdesc:a305668873db95b85b0b78c0df4e2c90c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Measured in pixels, how long was the observed perimeter.  <a href="structAprilTags_1_1TagDetection.html#a305668873db95b85b0b78c0df4e2c90c">More...</a><br /></td></tr>
<tr class="separator:a305668873db95b85b0b78c0df4e2c90c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a306e7bbef8727d33db049c02be76f186"><td class="memItemLeft" align="right" valign="top"><a id="a306e7bbef8727d33db049c02be76f186"></a>
Eigen::Matrix3d&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structAprilTags_1_1TagDetection.html#a306e7bbef8727d33db049c02be76f186">homography</a></td></tr>
<tr class="memdesc:a306e7bbef8727d33db049c02be76f186"><td class="mdescLeft">&#160;</td><td class="mdescRight">A 3x3 homography that computes pixel coordinates from tag-relative coordinates. <br /></td></tr>
<tr class="separator:a306e7bbef8727d33db049c02be76f186"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6573a546a94db5f41c74153d83520f1"><td class="memItemLeft" align="right" valign="top"><a id="ac6573a546a94db5f41c74153d83520f1"></a>
std::pair&lt; float, float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structAprilTags_1_1TagDetection.html#ac6573a546a94db5f41c74153d83520f1">hxy</a></td></tr>
<tr class="memdesc:ac6573a546a94db5f41c74153d83520f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">The homography is relative to image center, whose coordinates are below. <br /></td></tr>
<tr class="separator:ac6573a546a94db5f41c74153d83520f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a305668873db95b85b0b78c0df4e2c90c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a305668873db95b85b0b78c0df4e2c90c">&#9670;&nbsp;</a></span>observedPerimeter</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">float AprilTags::TagDetection::observedPerimeter</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Measured in pixels, how long was the observed perimeter. </p>
<p>Observed perimeter excludes the inferred perimeter which is used to connect incomplete quads. </p>

</div>
</div>
<a id="a51424269d34b011e17161e835a8e5149"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a51424269d34b011e17161e835a8e5149">&#9670;&nbsp;</a></span>p</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::pair&lt;float,float&gt; AprilTags::TagDetection::p[4]</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Fields below are filled in by <a class="el" href="classAprilTags_1_1TagDetector.html">TagDetector</a> /////////////// Position (in fractional pixel coordinates) of the detection. </p>

</div>
</div>
<hr/>The documentation for this struct was generated from the following files:<ul>
<li>calico/third_party/apriltags/apriltags/<a class="el" href="TagDetection_8h_source.html">TagDetection.h</a></li>
<li>calico/third_party/apriltags/src/TagDetection.cc</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>
